home *** CD-ROM | disk | FTP | other *** search
- //****************************************************************//
- // Filename: ARexxPort.h
- // Autor: Christian Taulien of Strange Intelligence
- // Purpose: Definition of an ARexxPort-Class
- // Creation: 10. Mai 1998
- //****************************************************************//
- #ifndef AREXXPORT_H
- #define AREXXPORT_H
-
- #include <exec/types.h>
- #include <exec/ports.h>
- #include <dos/rdargs.h>
-
- #include "SIFC_Strings.h"
-
- struct ARexxCommand
- {
- char *m_sName;
- char *m_sArgs;
- ULONG m_ulCommandID;
- };
-
- class ARexxPortC
- {
- private:
- // ## private datamembers ##
- struct ARexxCommand **m_ppoCommands;
- struct MsgPort *m_poPort;
- struct RDArgs *m_poRDArgs;
- StringC m_oPortName;
- BOOL m_bPortInstalled;
- BOOL m_bProcessing;
-
- protected:
- // ## protected methods ##
- void replyRexxCommand(struct RexxMsg *arg_poRexxMsg,
- LONG arg_lPrimary,
- LONG arg_lSecondary,
- char *arg_sResult);
- void closeDownARexxHost(void);
- BOOL setupARexxHost(char *arg_sPortName);
- virtual struct ARexxCommand *findARexxCommand(StringC &arg_roCmdName);
- virtual BOOL doRXCommand(struct RexxMsg *arg_poARexxMsg);
- virtual BOOL dispatchARexxCommand(ULONG arg_ulCmdID,
- LONG *arg_alArgArray,
- LONG &arg_rlRC,
- LONG &arg_rlRC2,
- StringC &roResult);
-
- public:
- // ## public methods ##
- ARexxPortC(char *arg_sPortName, struct ARexxCommand **arg_ppoCommands);
- virtual ~ARexxPortC();
-
- BOOL processARexxCommand(void);
- void setCommandList(struct ARexxCommand **arg_ppoCommands)
- { m_ppoCommands = arg_ppoCommands; }
- BOOL isOpen() { return m_bPortInstalled; }
- BOOL isProcessing() { return m_bProcessing; }
- struct MsgPort *getMsgPort() { return m_poPort; }
- };
-
- #endif // AREXXPORT_H
-